#pragma once

BEGIN_ARETE_NAMESPACE(components)

class AEState;

class AEStateListener
{
public:
	virtual ~AEStateListener(void) { }

	virtual void initialize(void) = 0;

	virtual bool createState(std::shared_ptr<AEState>,const string&) = 0;
	virtual bool setActive(const string&) = 0;
	virtual bool removeState(const string&) = 0;

	virtual AEState* getActiveState(void) = 0;
	virtual AEState* getState(const string&) = 0;
};

END_ARETE_NAMESPACE